package com.main.dso;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import com.generico.dao.ctg.CtgCatalogoDao;
import com.generico.dao.ctg.CtgProductoDao;
import com.generico.dto.ctg.CtgCatalogo;
import com.generico.dto.ctg.CtgProducto;
import com.generico.exception.AsiWebException;
import com.main.cliente.dto.Pedido;
import com.main.cliente.dto.PedidoDetalle;
import com.main.cliente.dto.SgiPersona;
import com.main.dao.InstaladorDao;
import com.main.dao.PedidoDAO;
import com.main.dao.PedidoDetalleDAO;
import com.main.dao.SgiPersonaDao;
import com.main.dao.UserDAO;
import com.main.java.Instalador;
import com.main.java.Role;
import com.main.java.User;
import com.main.java.UserRoles;
import com.web.util.GenericoUtil;

@Service
public class InstaladorServiceImpl implements InstaladorService{

	
	@Autowired
	private InstaladorDao instaladorDao;
	
	@Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = true, rollbackFor = {Exception.class, AsiWebException.class})
	public List<Object[]> obtenerListaInstaladores() throws AsiWebException {

		try {
			Long idUsuario;
			Long idInstalador;
			List<Object[]> listaUno = new ArrayList<Object[]>();
			List<Object[]> listaDos = new ArrayList<Object[]>();
			List<Object[]> listaResultante = new ArrayList<Object[]>();
			listaUno = instaladorDao.obtenerUsuariosInstaladores();
			listaDos = instaladorDao.obtenerListaInstalador();
			
			
			for (int i = 0; i < listaUno.size(); i++) {
				boolean ocupado = false;
				idUsuario = (Long) listaUno.get(i)[0];
				for (int j = 0; j < listaDos.size(); j++) {
					idInstalador = (Long) listaDos.get(j)[0]; 
					/**si esta en usuario y esta en instalador = esque esta ocupado en un grupo**/
					if (idUsuario == idInstalador) {
						ocupado = true;
					}
				}
				if (!ocupado) {
					listaResultante.add(listaUno.get(i));
				}
			}
			
			
			
			return listaResultante;
		} catch (Exception e) {
			e.printStackTrace();
			return Collections.EMPTY_LIST;
		}
	
	}
	
}
